package com.itheima.controller;

import com.alibaba.fastjson.JSON;
import com.itheima.pojo.Dept;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

@Controller // 只是交给spring管理 没有设置响应内容
public class TestController {
    /*
      没有 @ResponseBody  SpringMVC方式接收参数方式

     */

        /**
         *
         * @param request  请求对象
         * @param response  响应对象
         *                    一次请求来了之后 Tomcat会把浏览器的这次请求 封装成一个Request对象
         *                    一次请求对应一次响应
         *                    于此同时,Tomcat提前把对应响应对象创建出来了,里面可以封装响应信息
         *                            Response
         */
        @GetMapping("/test")
        public void test(HttpServletRequest request, HttpServletResponse response) throws Exception {
            // request 代表请求信息  解析获取请求内容   浏览器给服务器
            // 1:可以解析请求的路径 http://localhost:8080/test
            String url = request.getRequestURL().toString();
            System.out.println("获取请求url:"+url);
            //2:可以获取 请求头信息  (键值对)
            String host = request.getHeader("Host");
            System.out.println("根据请求头的名字解析请求头数据:"+host);
            //3:获取请求参数
            String name = request.getParameter("name");
            System.out.println("获取参数name的值:"+name);

            // response 代表响应信息  可以设置响应内容  服务器给浏览器
            // 介绍响应  响应行  响应头  响应体
            // 响应体就是响应给浏览器的数据   数据跟着流 由服务器流向浏览器
            //  从服务器的角度是输出...
    //        response.getOutputStream();
    //        response.getWriter();
            // 写数据之前  设置一下  写数据的格式 和编码
    //        response.setContentType("text/html;charset=utf-8");
    //        PrintWriter writer = response.getWriter();//服务器通向浏览器
    //        writer.write("<h1>嘿嘿</h1>");
    //        writer.write("haha");

            // 想响应 json格式
            //表达一个 部门信息
            /*  {
                    "id": 1,
                    "name": "教研部"
               }
               */
            Dept dept = new Dept(30,"火线部", LocalDateTime.now(),LocalDateTime.now());
            //我们对象变成json可以使用 前人栽的树
            //  alibaba  fastjson
            // 导入依赖
            // 提供了方法可以把 对象变成json字符串
    //        String jsonString = JSON.toJSONString(dept);
            //  现在数据json
            response.setContentType("application/json;charset=utf-8");
    //        response.getWriter().write(jsonString);
            //  还可以吧 对象的集合 变成json字符串
            Dept dept2 = new Dept(31,"旭旭部", LocalDateTime.now(),LocalDateTime.now());
            List<Dept> deptList = new ArrayList<>();
            deptList.add(dept);
            deptList.add(dept2);
            String jsonString = JSON.toJSONString(deptList);
            response.getWriter().write(jsonString);
        }
}
